// Copyright 2021 by 马万里. All rights reserved.
// 开发团队 ：   鸡中之霸
// 开发人员 ：   马万里
// 开发时间 ：   2021/2/28 14:39
// 文件名称 ：   consumer.go
// 工程名称 ：   netpan
// 开发工具 ：   GoLand
//

package mq

import "log"

var done chan bool

// StartConsume: 开始监听队列,获取消息
func StartConsume(qName, cName string, callback func(msg []byte) bool) {
	// 1. 通过channel.Consume获取消息信道
	msgs, err := channel.Consume(
		qName,
		cName,
		true,
		false,
		false,
		false,
		nil,
	)
	if err != nil {
		log.Println(err.Error())
		return
	}

	// 2. 循环获取队列的消息
	done = make(chan bool)
	go func() {

		for msg := range msgs {
			// 3. 调用callback方法处理新的消息
			processSuc := callback(msg.Body)
			if !processSuc {
				// TODO: 写入到另一个队列,用于异常情况的重试
			}
		}
	}()
	<-done
	// 关闭channel
	channel.Close()
}
